#include<iostream>
#include<vector>
using namespace std;
//class Solution {
//public:
//    int maxArea(vector<int>& height) {
//        int n = height.size();
//        int left = 0; int right = n - 1; int v = 0;
//        while (left < right)
//        {
//            int tmp = (min(height[left], height[right])) * (right - left);
//            if (v < tmp)
//                v = tmp;
//                if (height[left] < height[right]) left++;
//                else right++;
//        }
//        return v;
//    }
//};
//int main()
//{
//
//
//	return 0;
//}
//
//class Solution {
//public:
//    int maxArea(vector<int>& height) {
//        int n = height.size();
//        int left = 0; int right = n - 1; int v = 0;
//        while (left < right)
//        {
//            if (v < min(height[left], height[right]) * (right - left))
//                v = (min(height[left], height[right])) * (right - left);
//            if (height[left] < height[right]) left++;
//            else right++;
//        }
//        return v;
//    }
//};
class Base 
{
public:
	virtual void func1() { cout << "Base::func1" << endl; }
	virtual void func2() { cout << "Base::func2" << endl; }
	void func5() { cout << "Base::func5" << endl; }
protected:
	int a = 1;
};

class Derive : public Base
{
public:
	virtual void func1() { cout << "Derive::func1" << endl; }
	virtual void func3() { cout << "Derive::func1" << endl; }
		void func4() { cout << "Derive::func4" << endl; }
	protected:
		int b = 2;
};

int main()
{

	Base b;

	return 0;
}